package com.ocp.macro.mapper.dealerAccount;

import com.ocp.macro.entity.DealerAccount;
import com.ocp.macro.entity.UserInfoToken;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface DealerAccountMapper {
    /**
     * 查询账号信息列表
     * @param dealerAccount 用户
     * @return 账户信息集合
     */
    List<DealerAccount> selectDealerAccountList(DealerAccount dealerAccount);

    /**
     * 根据用户名，查询账号信息
     * @param dealerAccount 用户名
     * @return 账户信息
     */
    DealerAccount selectDealerAccountOne(DealerAccount dealerAccount);

    /**
     * 实现：孙历
     * 通过username查找用户信息
     * @param username
     * @return
     */
    Integer selectDealInfoByUserName(String username);

    /**
     * 添加一个新增经销商账号
     * @param dealerAccount 新增账号信息
     */
    Integer insertDealerAccount(DealerAccount dealerAccount);

    /**
     * 给账号添加权限
     * @param accountId 进行授权的账号id
     * @param authIds 权限id集合
     * @return 影响条数
     */
    Integer insertDealerAccountAuthorities(Integer accountId, List<Integer> authIds);

    /**
     * 更新账号信息
     * @param dealerAccount 账号信息
     * @return 影响行数
     */
    Integer updateDealerAccountInfo(DealerAccount dealerAccount);

    /**
     * 删除账号(逻辑删除)
     * @param dealerAccount 进行删除的账号
     * @return 影响行数
     */
    Integer deleteDealerAccount(DealerAccount dealerAccount);

    /**
     * 删除账号所拥有的权限
     * @param dealerAccount 进行删除的账号
     * @return 影响行数
     */
    Integer deleteDealerAccountRelAuthority(DealerAccount dealerAccount);

    /**
     * 重置账号密码(123456)
     * @param dealerAccountId 账号id
     * @return 影响行数
     */
    Integer resetDealerAccountPassword(@Param("defaultPwd") String defaultPwd, @Param("dealerAccountId") Integer dealerAccountId);

    /**
     * 实现：孙历
     * 请求该总帐号下的所有子账号，根据dealerAccount封装的信息筛选
     * @param dealerAccount
     * @return 查询的子账号信息
     */
    List<DealerAccount> selectDealerSubAccountList(DealerAccount dealerAccount);

    /**
     * 实现：孙历
     * 批量请求删除所选的经销商子账号
     * @param subaccount 封装账号id数组的对象
     */
    Integer delDealerSubAccountDelete(List<Integer> subaccount);

    /**
     * 实现：孙历
     * 批量请求所选的 经销商子账号 进行 账号状态设置
     * 和传的status字段的值：0禁用，1启用
     */
    Integer dealerSubAccountState(@Param("status") Integer status,@Param("subaccount") List<Integer> subaccount);

    /**
     * 实现：孙历
     * 经销商子账号进行信息修改请求
     * @param dealerAccount 新的子账号信息
     */
    Integer dealerSubAccountModify(DealerAccount dealerAccount);

    /**
     * 实现：孙历
     * 重置子经销商密码
     * @param subAcctId
     * @return
     */
    Integer dealerAccountResetPwd(Integer[] subAcctId,String repassword);
}
